<?php

class BannerController extends CAdminController {

    public $layout = 'column2';

    /**
     * @var CActiveRecord the currently loaded data model instance.
     */
    private $_model;

    /**
     * @return array action filters
     */
    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {                
        return array(                        
        );
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'          
        $model = new Banner('search');
        if (isset($_GET['Banner']))
            $model->attributes = $_GET['Banner'];
        $this->render('index', array(
            'model' => $model,
        ));
    }        

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate() {
        $model = new Banner();
        if (isset($_POST['Banner'])) {
            $model->attributes = $_POST['Banner'];            
            if (!empty($_FILES['file']) && $_FILES['file']['size'] > 0) {
                $filename = $_FILES['file']['name'];
                $pos = strrpos($filename, '.');
                $name = substr($filename, 0, $pos);
                $name = strtolower(str_replace(' ', '-', Myvietstring::removeVietChars($name)));
                $name = Myvietstring::removeInvalidCharacter($name);
                $name = strlen(strlen($name) > 20) ? substr($name, 0, 20) : $name;
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                // $real_name = $name . '.' . $ext;
                $name.= '-' . time();
                $name.= '.' . $ext;
                $fullpath = 'files/banners/' . $name;
                move_uploaded_file($_FILES['file']['tmp_name'], $fullpath);
                $model->file = $fullpath;       
                
                if($model->type == 2 && $model->status == 1){
                    $modelBanner = Banner::model()->findAll('type=2 AND status=1');
                    if(isset($modelBanner)){
                        foreach($modelBanner as $item){
                            $item->status = 0;
                            $item->save();
                        }
                    }
                }
                
                if ($model->save()){                         
                    $this->redirect(array('update', 'id' => $model->id));
                }
            }else{
                Common::alert("Không tồn tại file", Yii::app()->request->urlReferrer);
            }            
        }

        $this->render('create', array(
            'model' => $model,
        ));
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     */
    public function actionUpdate() {       
        $model = $this->loadModel();                
        if (isset($_POST['Banner'])) {
            $model->attributes = $_POST['Banner'];                          
            if (!empty($_FILES['file']) && $_FILES['file']['size'] > 0) {
                $filename = $_FILES['file']['name'];
                $pos = strrpos($filename, '.');
                $name = substr($filename, 0, $pos);
                $name = strtolower(str_replace(' ', '-', Myvietstring::removeVietChars($name)));
                $name = Myvietstring::removeInvalidCharacter($name);
                $name = strlen(strlen($name) > 20) ? substr($name, 0, 20) : $name;
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                // $real_name = $name . '.' . $ext;
                $name.= '-' . time();
                $name.= '.' . $ext;
                $fullpath = 'files/banners/' . $name;
                move_uploaded_file($_FILES['file']['tmp_name'], $fullpath);
                $model->file = $fullpath;
            }
            
            if($model->type == 2 && $model->status == 1){
                $modelBanner = Banner::model()->findAll('type=2 AND status=1');
                if(isset($modelBanner)){
                    foreach($modelBanner as $item){
                        $item->status = 0;
                        $item->save();
                    }
                }
            }
            
            if ($model->save()){
                Common::alert("Cập nhật thành công!", Yii::app()->request->urlReferrer);                
            }
        }

        $this->render('update', array(
            'model' => $model,
        ));
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     */
    public function actionDelete() {
        if (Yii::app()->request->isPostRequest) {
            // we only allow deletion via POST request
            $this->loadModel()->delete();

            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(array('index'));
        }
        else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }        

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     */
    public function loadModel() {
        if ($this->_model === null) {                 
            if (isset($_GET['id'])) {                                    
                $this->_model = Banner::model()->findByPk($_GET['id']);
            }
            if ($this->_model === null)
                throw new CHttpException(404, 'The requested page does not exist.');
        }        
        return $this->_model;
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
        if ($error = Yii::app()->errorHandler->error) {
            if (Yii::app()->request->isAjaxRequest)
                echo $error['message'];
            else
                $this->render('error', $error);
        }
    }

}